/*
enqueue: 元素进入队列
dequeue: 元素出队列
peek: 获取队头元素
isEmpty: 判断队列是否为空
size: 获取队列元素个数
 */
class Queue {
    constructor() {
        this.q = []
    }
    // enqueue: 元素进入队列
    enqueue(item) {
        this.q[this.q.length] = item
    }
    // dequeue: 元素出队列  由于队列先进先出的特性，去掉数组第一个元素以实现出队
    dequeue() {
        if (this.q.length !== 0) {
            this.q = this.q.slice(1)
        }
        else {
            throw new Error("?")
        }
    }
    // peek: 获取队头元素
    peek() {
        if (this.q.length !== 0) {
            return this.q[0]
        }
        else {
            throw new Error("?")
        }
    }
    // isEmpty: 判断队列是否为空
    isEmpty() {
        return this.q.length === 0
    }
    // size: 获取队列元素个数
    size() {
        return this.q.length
    }
    // clear 清空
    clear() {
        this.q = []
    }
    // 取对尾元素
    getBack() {
        if (this.q.length !== 0) {
            return this.q[this.q.length - 1]
        }
        else {
            throw new Error("?")
        }
    }
}
